Virtualization enables a single host machine with hardware and software support for virtualization to present an abstraction of machine interface, such that the underlying hardware of the host machine appears as one or more independently operating virtual machines. Each virtual machine may therefore function as a self-contained platform. Virtualization technology may be used to allow multiple guest operating systems and/or other guest software to coexist and execute apparently simultaneously and apparently independently on multiple virtual machines while actually physically executing on the same hardware platform. A virtual machine may mimic the hardware of the host machine or alternatively present a different hardware abstraction altogether.
Virtualization systems may include a virtual machine monitor (VMM) which may control the host machine. The VMM provides guest software operating in a virtual machine with a set of resources (e.g., processors, memory, IO devices). The VMM may use facilities of hardware virtualization assistance to provide services to a virtual machine and to provide protection from and between multiple virtual machines executing on the host machine. The VMM may create virtual devices, emulated in software in the VMM, which are included in the virtual machine (e.g., virtual IO devices). The VMM handles/emulates instructions in software in a manner suitable for sharing the host machine hardware for the virtual machines on which the guest software is executing. Examples of VMM may comprise a hybrid VMM, a host based VMM and a hypervisor VMM. In the hypervisor architecture, the VMM may have access to the platform hardware and control physical resources in the underlying platform.